import Lex
import Draw
import Stms


def getCode():
  code=""
  tid=input("请选择您的输入方式(0键盘输入|others文件输入):")
  if tid=='0':
    code=input("请输入待检测代码:")
  else:
    fileName=input("请输入代码文件名:")
    with open(fileName,'r') as f:
      code=f.readlines()
  return code


if __name__ == "__main__":
  #1.获取待检测代码
  code=getCode()
  #2.送入词法分析器 得到词汇token
  tokens=Lex.process(code)
  print("[词法分析结果]:"+str(tokens))
  print("[词数]:"+str(len(tokens)))
  #3.进行代码分析
  #3.1 获取一个语法单位
  retDict1=Stms.getCodeUnit(tokens)
  #3.2 语法单位如果是Block 才能执行下去
  if retDict1["status"]==2:
    #3.2 将语法单位的token序列 送入Block进行检测
    retDcit=Stms.testBlock(retDict1["need"])
    if retDcit["status"]:
      print("绘图中..")
      Draw.drawTree(retDcit["needTree"])
      print("绘图完成")
    else:
      print("未知error!")
else:
  print("找不到合适的待检测Block")
  


